"""
死锁就是：拿到锁的双方一直在等待对方释放锁

案例：让10个线程通过下标拿到列表中的数据，且同一时刻只能有一个县城去拿到值
"""
import threading

# 创建互斥锁
lock = threading.Lock()

def getValue(index):
    #得到锁 ，保证同一时刻只能有一个线程访问 列表
    lock.acquire()
    mylist = [1,2,3,4]
    # 判断索引是否越界
    if index >= len(mylist):
        print(f"索引越界：{index}")
        # 如果索引越界也要释放锁，不然别的线程都要等着了 -------------------
        lock.release()
        return
    print(mylist[index])
    # 释放锁
    lock.release()

if __name__ == '__main__':
    # 创建10个线程
    for i in range(10):
        t  = threading.Thread(target=getValue(i))
        t.start()

